home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_02 / smith / baz.c < prev    next >
C/C++ Source or Header  |  1993-12-29  |  2KB  |  67 lines

  1. /* BAZ.C
  2.  * Contributed to Public Domain 9/93
  3.  * by Thad Smith, Boulder Co.
  4.  */
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include "baz.h"
  8.  
  9. #define MAX_COL     70  /* # output chars / line */
  10.  
  11. FILE       *inf, *outf;
  12. unsigned char buf[8192];
  13.  
  14. /* Write data block to output file. */
  15. /* ret value: 0 = OK, -1 = error    */
  16. int
  17. enc_out (const char *out, size_t len)
  18. {
  19.    fwrite ((const void *) out, 1, len, outf);
  20.    return (ferror (outf) ? -1 : 0);
  21. }
  22.  
  23. int
  24. main (int argc, char *argv[])
  25. {
  26.    unsigned int n;      /* # bytes read          */
  27.    int         s;       /* return output status  */
  28.  
  29.    if (argc != 3) {
  30.       puts ("BAZ - Convert binary file to "
  31.             "BAZ911-encoded file");
  32.       puts ("Usage: BAZ infile outfile");          
  33.       puts ("  infile = input file (any format)");
  34.       puts ("  outfile= output file in BAZ911 format");
  35.       return EXIT_FAILURE;
  36.    }
  37.    if ((inf = fopen (argv[1], "rb")) == NULL) {
  38.       fprintf (stderr, "Error opening input file: %s",
  39.                         argv[1]);
  40.       return EXIT_FAILURE;
  41.    }
  42.    if ((outf = fopen (argv[2], "w")) == NULL) {
  43.       fprintf (stderr, "Error opening output file: %s",
  44.                         argv[2]);
  45.       return EXIT_FAILURE;
  46.    }
  47.    fprintf (outf, "BAZ911: %s\n", argv[1]);
  48.    ebaz_init (MAX_COL, enc_out);
  49.    do {
  50.       n = fread (buf, 1, sizeof buf, inf);
  51.       s = ebaz_data (buf, n);
  52.    } while (n > 0 && s == 0);
  53.    putc ('\n', outf);
  54.    if (ferror (outf)) {
  55.       fprintf (stderr, "Error writing output file\n");
  56.       return EXIT_FAILURE;
  57.    }
  58.  
  59.    if (ferror (inf)) {
  60.       fprintf (stderr, "Error reading input file\n");
  61.       return EXIT_FAILURE;
  62.    }
  63.    return EXIT_SUCCESS;
  64. }
  65. /* End of File */ 
  66.  
  67.